# PDF converter - сервис конвертации HTML в PDF/A-1 для 1С:Медицина

Сервис выполняет конвертацию из XHTML и HTML5 в PDF/A-1, пригодный для регистрации в РЭМД ЕГИСЗ. 
Для конвертации используется проект openhtmltopdf. См. описание на странице https://github.com/danfickle/openhtmltopdf/wiki.

Сервис реализован как сервлет для веб сервера Jetty версии 9.4+. 

## Описание веб-ссылок


### /send_file.html - форма отправки XHTML или HTML5 для выполнения конвертации. 
Не подеерживаются JS скрипты в HTML. Рекомендуется использовать XHTML как более производительный парсер.
В HTML должен быть указан шрифт, так как в openhtmltopdf нет шрифта "по умолчанию". Пример:
 ```
<style type="text/css">
   body {
      font-family: 'Arial';
   }
</style>
 ```
 В стилях необходимо использовать только те шрифты, которые предварительно загружены в папку DATA_PATH. Можно использовать шрифты mscorefonts2.
 В логах работы openhtmltopdf (см. ниже) можно увидеть загруженные шрифты.

На форме можно указать ключ, по которому сервлет сохранит логи работы openhtmltopdf. При открытии лога с этим ключом производится удаление лога.

ВАЖНО! В случае если ключ был указан, то вызов просмотра лога по ключу является обязательным! Отсутвие вызова просмотра лога приведет к утечке памяти в сервисе!

### /log_XXXXX - просмотр лога 
XXXXX - ключ, который был передан при запуске конвертации. После открытия лога ключом производится удаление этого лога.

### /convertStrictHtml - конвертация XHTML в PDF/A-1
Запуск конвертации файла, переданного в форме. Если в форме передан ключ лога, то включается запись логов.
В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".

### /convertHtml5 - конвертация HTML5 в PDF/A-1
Запуск конвертации файла, переданного в форме. Если в форме передан ключ лога, то включается запись логов.
В случае фатальной ошибки формирования pdf возвращается файл нулевого размера. В этом случае причина ошибки будет в логе как "WARNING Unhandled exception ...".

## Папка src/main
Содержит исходный код. Для сборки проекта необходимо выполнить команду 
 ```
mvn package
 ```
в папке, где расположен файл pom.xml. Подробнее о Maven можно найти на странице https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.

## Параметры сервлета
В файле PdfConverter.war:\WEB-INF\web.xml задаются следующие параметры:
- DATA_PATH - полный путь к папке, где хранятся TrueType шрифты, используемые для формирования PDF/A-1. Значение по умолчанию - /var/www/upload/PDFConverter.


## Установка
Для работы сервлета semd.war нужен Jetty версии 9.4 или выше. Необходимо опубликовать сервлет semd.war в Jetty 9. Необходимо руководствоваться инструкций по публикации Jetty. 

Для Jetty9 из состава Ubuntu 20.04 файл semd.war необходимо поместить в папку /var/lib/jetty9/webapps. Отвечать сервлет будет по адресу "http:/localhost:9000/semd/login.html".
  
